From e4f0418003ee642eb630c00fba0810dfdb7951b6 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Mon, 5 Jul 2021 03:04:08 +0200 Subject: [PATCH] gdk: Require EGL version 1.4 across the board Mesa currently ships 1.5. --- gdk/gdkglcontextprivate.h | 7 +++++++ gdk/wayland/gdkglcontext-wayland.c | 10 ++++++++++ gdk/x11/gdkglcontext-egl.c | 11 +++++++++++ 3 files changed, 28 insertions(+) diff --git a/gdk/gdkglcontextprivate.h b/gdk/gdkglcontextprivate.h index 07310eebfa..2f9fc23eed 100644 --- a/gdk/gdkglcontextprivate.h +++ b/gdk/gdkglcontextprivate.h @@ -27,6 +27,13 @@ G_BEGIN_DECLS +/* Version requirements for EGL contexts. + * + * If you add support for EGL to your backend, please require this. + */ +#define GDK_EGL_MIN_VERSION_MAJOR (1) +#define GDK_EGL_MIN_VERSION_MINOR (4) + #define GDK_GL_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_GL_CONTEXT, GdkGLContextClass)) #define GDK_IS_GL_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_GL_CONTEXT)) #define GDK_GL_CONTEXT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_GL_CONTEXT, GdkGLContextClass)) diff --git a/gdk/wayland/gdkglcontext-wayland.c b/gdk/wayland/gdkglcontext-wayland.c index 23e0105802..6044a9a907 100644 --- a/gdk/wayland/gdkglcontext-wayland.c +++ b/gdk/wayland/gdkglcontext-wayland.c @@ -448,6 +448,16 @@ gdk_wayland_display_init_gl (GdkDisplay *display, _("Could not initialize EGL display")); return NULL; } + if (major < GDK_EGL_MIN_VERSION_MAJOR || + (major == GDK_EGL_MIN_VERSION_MAJOR && minor < GDK_EGL_MIN_VERSION_MINOR)) + { + eglTerminate (dpy); + g_set_error (error, GDK_GL_ERROR, + GDK_GL_ERROR_NOT_AVAILABLE, + _("EGL version %d.%d is too old. GTK requires %d.%d"), + major, minor, GDK_EGL_MIN_VERSION_MAJOR, GDK_EGL_MIN_VERSION_MINOR); + return NULL; + } if (!eglBindAPI (EGL_OPENGL_API)) { diff --git a/gdk/x11/gdkglcontext-egl.c b/gdk/x11/gdkglcontext-egl.c index 271e77c2f2..1ce44b168b 100644 --- a/gdk/x11/gdkglcontext-egl.c +++ b/gdk/x11/gdkglcontext-egl.c @@ -626,6 +626,17 @@ gdk_x11_display_init_egl (GdkX11Display *self, _("Could not initialize EGL display")); return FALSE; } + if (major < GDK_EGL_MIN_VERSION_MAJOR || + (major == GDK_EGL_MIN_VERSION_MAJOR && minor < GDK_EGL_MIN_VERSION_MINOR)) + { + eglTerminate (dpy); + self->egl_display = NULL; + g_set_error (error, GDK_GL_ERROR, + GDK_GL_ERROR_NOT_AVAILABLE, + _("EGL version %d.%d is too old. GTK requires %d.%d"), + major, minor, GDK_EGL_MIN_VERSION_MAJOR, GDK_EGL_MIN_VERSION_MINOR); + return FALSE; + } if (!gdk_x11_display_create_egl_config (self, force, out_visual, out_depth, error)) { -- 2.30.2